[
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1, "y": 1, "identifier": 1}],
       "removeGestureResolveDelay": true }
    ],
    "expectedGestures": [{ "type": "tap" }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointermove",
        "points": [{"x": 1.03, "y": 1.03, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1.03, "y": 1.03, "identifier": 1}],
       "removeGestureResolveDelay": true }
    ],
    "expectedGestures": [{ "type": "tap" }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}],
        "removeDwellThreshold": true},
      {"type": "pointerup", "points": [{"x": 1, "y": 1, "identifier": 1}]}
    ],
    "expectedGestures": [{ "type": "dwell" }, { "type": "dwellend" }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointermove",
        "points": [{"x": 1.03, "y": 1.02, "identifier": 1}]},
      {"type": "pointerup",
        "points": [{"x": 1.03, "y": 1.02, "identifier": 1}]},
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointermove",
        "points": [{"x": 0.97, "y": 1.01, "identifier": 1}]},
      {"type": "pointerup",
        "points": [{"x": 0.97, "y": 1.01, "identifier": 1}],
        "removeGestureResolveDelay": true }
    ],
    "expectedGestures": [{ "type": "doubletap" }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1, "y": 1, "identifier": 1}],
       "removeGestureResolveDelay": true }
    ],
    "expectedGestures": [{ "type": "tripletap" }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}],
        "removeDwellThreshold": true},
      {"type": "pointerup", "points": [{"x": 1, "y": 1, "identifier": 1}]}
    ],
    "expectedGestures": [{ "type": "doubletaphold" },
      { "type": "doubletapholdend" }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}],
        "removeDwellThreshold": true},
      {"type": "pointerup", "points": [{"x": 1, "y": 1, "identifier": 1}]}
    ],
    "expectedGestures": [{ "type": "taphold" }, { "type": "tapholdend" }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointermove", "points": [{"x": 1.5, "y": 1, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1.5, "y": 1, "identifier": 1}]}
    ],
    "expectedGestures": [{ "type": "swiperight" }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointermove", "points": [{"x": 1.15, "y": 1, "identifier": 1}]},
      {"type": "pointermove", "points": [{"x": 1.3, "y": 1, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1.3, "y": 1, "identifier": 1}]}
    ],
    "expectedGestures": [{ "type": "swiperight" }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1.5, "y": 1, "identifier": 1}]},
      {"type": "pointermove", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1, "y": 1, "identifier": 1}]}
    ],
    "expectedGestures": [{ "type": "swipeleft" }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointermove", "points": [{"x": 1, "y": 1.5, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1, "y": 1.5, "identifier": 1}]}
    ],
    "expectedGestures": [{ "type": "swipedown" }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1.5, "identifier": 1}]},
      {"type": "pointermove", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1, "y": 1, "identifier": 1}]}
    ],
    "expectedGestures": [{ "type": "swipeup" }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointermove",
        "points": [{"x": 1.5, "y": 1.1, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1.5, "y": 1.1, "identifier": 1}]}
    ],
    "expectedGestures": [{ "type": "swiperight" }]
  },
  {
    "events": [
      {"type": "pointerdown",
        "points": [{"x": 1.5, "y": 1.1, "identifier": 1}]},
      {"type": "pointermove", "points": [{"x": 1, "y": 0.95, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1, "y": 0.95, "identifier": 1}]}
    ],
    "expectedGestures": [{ "type": "swipeleft" }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointermove",
        "points": [{"x": 0.9, "y": 1.5, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 0.9, "y": 1.5, "identifier": 1}]}
    ],
    "expectedGestures": [{ "type": "swipedown" }]
  },
  {
    "events": [
      {"type": "pointerdown",
        "points": [{"x": 1.1, "y": 1.5, "identifier": 1}]},
      {"type": "pointermove", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1, "y": 1, "identifier": 1}]}
    ],
    "expectedGestures": [{ "type": "swipeup" }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1},
        {"x": 1, "y": 1.5, "identifier": 2}]},
      {"type": "pointermove", "points": [{"x": 1.5, "y": 1, "identifier": 1},
        {"x": 1.5, "y": 1.5, "identifier": 2}]},
      {"type": "pointerup", "points": [{"x": 1.5, "y": 1, "identifier": 1},
        {"x": 1.5, "y": 1.5, "identifier": 2}]}
    ],
    "expectedGestures": [{ "type": "swiperight", "fingers": 2 }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1},
        {"x": 1, "y": 1.5, "identifier": 2}]},
      {"type": "pointermove", "points": [{"x": 1.5, "y": 1, "identifier": 1},
        {"x": 1.5, "y": 1.5, "identifier": 2}]},
      {"type": "pointerup", "points": [{"x": 1.5, "y": 1, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1.5, "y": 1.5, "identifier": 2}]}
    ],
    "expectedGestures": [{ "type": "swiperight", "fingers": 2 }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1},
        {"x": 1, "y": 1.5, "identifier": 2},
        {"x": 1, "y": 2, "identifier": 3}]},
      {"type": "pointermove", "points": [{"x": 1.5, "y": 1, "identifier": 1},
        {"x": 1.5, "y": 1.5, "identifier": 2},
        {"x": 1.5, "y": 2, "identifier": 3}]},
      {"type": "pointerup", "points": [{"x": 1.5, "y": 1, "identifier": 1},
        {"x": 1.5, "y": 1.5, "identifier": 2},
        {"x": 1.5, "y": 2, "identifier": 3}]}
    ],
    "expectedGestures": [{ "type": "swiperight", "fingers": 3 }]
  },
  {
    "events": [
      {"type": "pointerdown",
        "points": [{"x": 1.6, "y": 1.5, "identifier": 1}],
        "removeDwellThreshold": true},
      {"type": "pointermove", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1, "y": 1, "identifier": 1}]}
    ],
    "expectedGestures": [{ "type": "dwell" }, { "type": "explore" },
      { "type": "exploreend" }]
  },
  {
    "events": [
      {"type": "pointerdown",
        "points": [{"x": 1.6, "y": 1.5, "identifier": 1}],
        "removeDwellThreshold": true},
      {"type": "pointermove", "points": [{"x": 1, "y": 1, "identifier": 1}]},
      {"type": "pointermove", "points": [{"x": 2, "y": 2, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 2, "y": 2, "identifier": 1}]}
    ],
    "expectedGestures": [{ "type": "dwell" }, { "type": "explore" },
      { "type": "explore" }, { "type": "exploreend" }]
  },
  {
    "events": [
      {"type": "pointerdown",
        "points": [{"x": 1.6, "y": 1.5, "identifier": 1}]},
      {"type": "pointermove", "points": [{"x": 1, "y": 1, "identifier": 1}],
        "removeSwipeMaxDuration": true},
      {"type": "pointerup", "points": [{"x": 1, "y": 1, "identifier": 1}]}
    ],
    "expectedGestures": [{ "type": "explore" }, { "type": "exploreend" }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1.5, "identifier": 1}]},
      {"type": "pointermove", "points": [{"x": 1, "y": 1, "identifier": 1}],
        "removeSwipeMaxDuration": true},
      {"type": "pointermove", "points": [{"x": 1.5, "y": 1, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1.5, "y": 1, "identifier": 1}]}
    ],
    "expectedGestures": [{ "type": "explore" }, { "type": "explore" },
      { "type": "exploreend" }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 1, "y": 1, "identifier": 1}],
        "removeDwellThreshold": true},
      {"type": "pointermove",
        "points": [{"x": 1.5, "y": 1.5, "identifier": 1}]},
      {"type": "pointermove",
        "points": [{"x": 1.55, "y": 1.5, "identifier": 1}]},
      {"type": "pointermove",
        "points": [{"x": 1.6, "y": 1.5, "identifier": 1}]},
      {"type": "pointermove",
        "points": [{"x": 1.65, "y": 1.5, "identifier": 1}]},
      {"type": "pointermove",
        "points": [{"x": 1.7, "y": 1.5, "identifier": 1}]},
      {"type": "pointermove",
        "points": [{"x": 1.75, "y": 1.5, "identifier": 1}]},
      {"type": "pointerup", "points": [{"x": 1.75, "y": 1.5, "identifier": 1}]}
    ],
    "expectedGestures": [{ "type": "dwell" }, { "type": "explore" },
      { "type": "explore" }, { "type": "exploreend" }]
  },
  {
    "events": [
      {"type": "pointerdown", "points": [{"x": 0.075, "y": 1, "identifier": 1},
        {"x": 1, "y": 1.5, "identifier": 2}]},
      {"type": "pointermove", "points": [{"x": 1.5, "y": 1, "identifier": 1},
        {"x": 1.5, "y": 1.5, "identifier": 2}]},
      {"type": "pointerup", "points": [{"x": 1.5, "y": 1, "identifier": 1},
        {"x": 1.5, "y": 1.5, "identifier": 2}]}
    ],
    "expectedGestures": [{ "type": "swiperight", "edge": true, "fingers": 2 }]
  },
  {
    "title": "Bug 1182311 - 3 finger triple tap is not reliable 1/2",
    "events": [
      {"points": [
        {"y": 1.88467, "x": 0.89311, "identifier": 0},
        {"y": 2.78481, "x": 0.56259, "identifier": 1},
        {"y": 1.35021, "x": 1.37834, "identifier": 2}], "type": "pointerdown"},
      {"points": [
        {"y": 1.88467, "x": 0.89311, "identifier": 0},
        {"y": 2.78481, "x": 0.56259, "identifier": 1},
        {"y": 1.35021, "x": 1.37834, "identifier": 2}], "type": "pointerup"},
      {"points": [
        {"y": 1.76512, "x": 0.98453, "identifier": 0},
        {"y": 1.1744, "x": 1.4346, "identifier": 1},
        {"y": 2.5879, "x": 0.61181, "identifier": 2}], "type": "pointerdown"},
      {"points": [
        {"y": 1.76512, "x": 0.98453, "identifier": 0},
        {"y": 1.1744, "x": 1.4346, "identifier": 1},
        {"y": 2.5879, "x": 0.61181, "identifier": 2}], "type": "pointerup"},
      {"points": [
        {"y": 1.30098, "x": 1.52602, "identifier": 0},
        {"y": 1.94093, "x": 1.02672, "identifier": 1},
        {"y": 2.67229, "x": 0.75246, "identifier": 2}], "type": "pointerdown"},
      {"points": [
        {"y": 1.30098, "x": 1.52602, "identifier": 0},
        {"y": 1.94093, "x": 1.02672, "identifier": 1},
        {"y": 2.67229, "x": 0.75246, "identifier": 2}], "type": "pointerup",
       "removeGestureResolveDelay": true}],
    "expectedGestures": [{ "type": "tripletap", "fingers": 3 }]
  },
  {
    "title": "Bug 1182311 - 3 finger triple tap is not reliable 2/2",
    "events": [
      {"type": "pointerdown",
       "points": [{"identifier": 0, "x": 2.21875, "y": 1.510417}]},
      {"type": "pointerdown",
       "points": [{"identifier": 1, "x": 1.479167, "y": 2.53125}]},
      {"type": "pointerdown",
       "points": [{"identifier": 2, "x": 1.072917, "y": 3.739583}]},
      {"type": "pointermove",
       "points": [{"identifier": 1, "x": 1.46875, "y": 2.53125}]},
      {"type": "pointermove",
       "points": [{"identifier": 1, "x": 1.447917, "y": 2.46875}]},
      {"type": "pointerup",
       "points": [{"identifier": 0, "x": 2.21875, "y": 1.510417}]},
      {"type": "pointerup",
       "points": [{"identifier": 1, "x": 1.447917, "y": 2.489583}]},
      {"type": "pointerup",
       "points": [{"identifier": 2, "x": 1.072917, "y": 3.739583}]},
      {"type": "pointerdown",
       "points": [{"identifier": 0, "x": 2.114583, "y": 1.572917}]},
      {"type": "pointerdown",
       "points": [{"identifier": 1, "x": 1.364583, "y": 2.614583}]},
      {"type": "pointerdown",
       "points": [{"identifier": 2, "x": 0.927083, "y": 3.864583}]},
      {"type": "pointermove",
       "points": [{"identifier": 1, "x": 1.364583, "y": 2.614583}]},
      {"type": "pointermove",
       "points": [{"identifier": 0, "x": 2.114583, "y": 1.572917}]},
      {"type": "pointerup",
       "points": [{"identifier": 1, "x": 1.364583, "y": 2.614583}]},
      {"type": "pointerup",
       "points": [{"identifier": 2, "x": 0.927083, "y": 3.864583}]},
      {"type": "pointerup",
       "points": [{"identifier": 0, "x": 2.114583, "y": 1.572917}]},
      {"type": "pointerdown",
       "points": [{"identifier": 0, "x": 1.4375, "y": 2.59375}]},
      {"type": "pointerdown",
       "points": [{"identifier": 1, "x": 1.083333, "y": 3.71875}]},
      {"type": "pointerdown",
       "points": [{"identifier": 2, "x": 2.15625, "y": 1.489583}]},
      {"type": "pointermove",
       "points": [{"identifier": 0, "x": 1.4375, "y": 2.59375},
                  {"identifier": 2, "x": 2.15625, "y": 1.489583}]},
      {"type": "pointermove",
       "points": [{"identifier": 0, "x": 1.4375, "y": 2.59375},
                  {"identifier": 2, "x": 2.15625, "y": 1.489583}]},
      {"type": "pointerup",
       "points": [{"identifier": 1, "x": 1.083333, "y": 3.71875}],
       "removeGestureResolveDelay": true}
    ],
    "expectedGestures": [{ "type": "tripletap", "fingers": 3 }]
  }

]
